---
title: 環境変数
description: Holloの設定を行うための環境変数について説明します。
---

import { Aside, Badge } from '@astrojs/starlight/components';

Holloは環境変数を使って設定を行います。
環境変数はプロジェクトの最上位ディレクトリに*.env*ファイルを作成するか、
Dockerの`-e`/`--env`オプションを使うか、
Railwayのenvironment variablesメニューから設定できます。


基本設定
--------

### `PORT` <Badge text="オプション" /> <Badge text="Railwayでは使われない" variant="tip" />

サーバーが受信するポート番号。デフォルトは3000です。

### `BIND` <Badge text="オプション" /> <Badge text="Railwayでは使われない" variant="tip" />

サーバーが受信するアドレス。有効なIPアドレスまたは`localhost`である必要があります。

### `DATABASE_URL` <Badge text="Railwayでは使われない" variant="tip" />

PostgreSQLのデータベースのURL。例：`postgresql://hollo:password@localhost/hollo`

### `SECRET_KEY` <Badge text="Railwayでは使われない" variant="tip" />

セッションを保護するための秘密鍵。44文字以上である必要があります。
次のコマンドで安全なランダムな秘密鍵を生成できます：

~~~~ sh frame="none"
openssl rand -hex 32
~~~~

### `TZ` <Badge text="オプション" />

アプリケーションの等時帯（time zone）。
有効な等時帯識別子である必要があります。
例：`UTC`、`America/New_York`、`Asia/Tokyo`。

デフォルトは`UTC`です。

### `BEHIND_PROXY` <Badge text="オプション" /> <Badge text="Railwayでは使われない" variant="tip" />

Holloがリバースプロキシの後ろにある場合は`true`に設定します。
HolloがL7ロードバランサーの後ろにある場合（通常はそうする必要があります）、
このオプションを有効にします。

基本的にはオフになっています。

<Aside>
  このオプションをオンにすると、
  Holloはリバースプロキシから受け取った`X-Forwarded-For`、`X-Forwarded-Proto`、`X-Forwarded-Host`ヘッダを信頼します。
  この動作はセキュリティ上注意が必要です。
</Aside>

### `ALLOW_PRIVATE_ADDRESS` <Badge text="オプション" />

このオプションを`true`に設定すると、サーバーサイドリクエストフォージェリ（SSRF）攻撃の防止を解除します。

ローカルネットワークでテストする場合は、このオプションをオンにする必要がある場合があります。

デフォルトではオフになっています。

<Aside>
  このオプションをオンにすることはセキュリティ上危険です。
  信頼できる環境でのみ使用し、本番環境では使用しないでください。
</Aside>


追加機能
--------

###  `HOME_URL` <Badge text="オプション" />

設定された場合、トップページへにアクセスした時にこのURLにリダイレクトされます。
設定されていない場合、トップページにはアカウント一覧が表示されます。

### `REMOTE_ACTOR_FETCH_POSTS` <Badge text="オプション" />

リモートアクターが最初に発見された場合に読み込む最新の公開投稿の数。

デフォルトは`10`です。

### `TIMELINE_INBOXES` <Badge text="オプション" />

このオプションを`true`に設定すると、タイムラインが受信箱のように動作します。
つまり、タイムラインに表示される投稿がリアルタイムでフィルタリングされるのではなく、
事前に取得された投稿がデータベースに保存されます。
この機能は多くのリモート投稿を受信する相対的に大きなインスタンスで有用です。

Hollo 0.4.0時点では、この機能は実験的であり、バグがあるかもしれません。
しかし、この機能は安定化した後にデフォルトの動作に変更される予定です。

基本的にはオフになっています。

### `ALLOW_HTML` <Badge text="オプション" />

このオプションを`true`に設定すると、Markdown内に生のHTMLを許可します。
（MarkdownはHolloでプロフィールの紹介や投稿の内容などに使用されます）
Markdownでサポートされている書式よりも高度な書式を使用する場合に便利ですが、
XSS（クロスサイトスクリプティング）攻撃に防止するため、
HTMLタグと属性は一部制限されます。


ログとデバッグ
--------------

### `LOG_LEVEL` <Badge text="オプション" />

アプリケーションのログレベル。
`debug`、`info`、`warning`、`error`、`fatal`のいずれかを選択してください。

デフォルトは`info`です。

### `LOG_QUERY` <Badge text="オプション" />

SQLクエリをログに残すには`true`に設定します。

基本的にはオフになっています。

### `LOG_FILE` <Badge text="オプション" />

構造化されたログを書き込むファイルのパスを指定します。
コンソールに出力されるログとは異なり、
ログファイルはJSON Lines形式で書き込まれます。

### `SENTRY_DSN` <Badge text="オプション" />

エラーレポートとトレースを送信するSentryプロジェクトのDSN。


メディアストレージ
------------------

### `DRIVE_DISK`

Holloでアバター、カスタム絵文字、
その他のメディア等のファイルを保存する為のディスクドライバ。

選択肢は`fs`（ローカルファイルシステム）または`s3`（S3互換のオブジェクトストレージ）のいずれかです。

後方互換性の為に`s3`がデフォルトですが、
将来的にはデフォルトは無くなる予定なので、明示的に設定する事をお勧めします。

ドライバの詳細については、[FlyDriveドキュメント]（英文）を参照してください。

<Aside type="caution">
  運用中のHolloの`DRIVE_DISK`および関連設定を運用途中で変更しても、
  既存のファイルは移動されません。
  新しいファイルだけが新しい設定に基づいて保存されます。

  また、既存のファイルはそのまま古い設定に従って提供されますので、
  この点に注意してください。例えば、`S3_BUCKET`を変更しても、
  既存のファイルは古いバケットで提供されますので、削除しないでください。
</Aside>

[FlyDriveドキュメント]: https://flydrive.dev/docs/drive_manager

### `STORAGE_URL_BASE`

メディアファイルを提供する公開URLベース。例：`https://media.hollo.social`。

`DRIVE_DISK=fs`を使用する場合、
ローカルファイルシステムに保存されたファイルをWebアクセス経由で提供するため、
通常は`https://<ホスト>/assets`の形式で設定する必要があります。
例：`https://hollo.example.com/assets`。

<Aside type="caution">
  - 実際の運用時にはHTTPSを使用する必要があります。
  - 公開的にアクセス可能でなければ、連合が正しく動作しません。
  - 柔軟性の為、オブジェクトストレージの実際のドメインを直接使うのではなく、
    `CNAME`されたドメインを使う事をお勧めします。
</Aside>

### ローカルファイルシステムの設定

#### `FS_STORAGE_PATH` <Badge text="FSドライバで必須" variant="note" />

ローカルファイルシステムでファイルを保存するパス。例： `/var/lib/hollo`.

<Aside>
  - ディレクトリが存在し、Holloプロセスが書き込める必要があります。
  - 権限の設定はディレクトリの場合755、ファイルの場合644をお勧めします。
  - 充分なディスク容量が確保されている事を確認してください。
  - 必ず定期的なバックアップを取ってください。
  - Dockerを使う時はパスが正しくマウントされているか確認してください。
</Aside>

### S3互換オブジェクトストレージの設定

<Aside>
  以下の設定は`DRIVE_DISK=s3`の場合のみ必要です。

  AWS IAMポリシーが下記の権限を持ってるか確認してください：

  - `s3:PutObject`
  - `s3:GetObject`
  - `s3:DeleteObject`
  - `s3:ListBucket`
</Aside>

#### `S3_REGION` <Badge text="S3ドライバで必須" variant="caution" />

S3互換オブジェクトストレージのリージョン。例：`us-east-1`

一部の非AWS S3互換サービスでは、この値が必要ないかもしれません。

#### `S3_BUCKET` <Badge text="S3ドライバで必須" variant="caution" />

S3互換オブジェクトストレージのバケット名。例：`hollo`

#### `S3_ENDPOINT_URL` <Badge text="S3ドライバで必須" variant="caution" />

S3互換オブジェクトストレージのエンドポイントURL。
例：`https://s3.us-east-1.amazonaws.com`

#### `S3_FORCE_PATH_STYLE` <Badge text="オプション" />

S3互換オブジェクトストレージに対してパススタイルURLを強制するかどうか。（`true`または`false`）
非AWS S3互換サービスで必要な場合があります。

基本的にはオフになっています。

#### `AWS_ACCESS_KEY_ID` <Badge text="S3ドライバで必須" variant="caution" />

S3互換オブジェクトストレージのアクセスキー。

#### `AWS_SECRET_ACCESS_KEY` <Badge text="S3ドライバで必須" variant="caution" />

S3互換オブジェクトストレージのシークレットキー。
